perm filename ROMMS.MF[MF,SYS]3 blob
sn#798116 filedate 1985-07-09 generic text, type C, neo UTF8
COMMENT ā VALID 00021 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 % This file contains special characters of ``math italic'' fonts
C00004 00003 cmchar "Leftward top half arrow"
C00006 00004 cmchar "Leftward bottom half arrow"
C00008 00005 cmchar "Rightward top half arrow"
C00010 00006 cmchar "Rightward bottom half arrow"
C00012 00007 cmchar "Left hook"
C00013 00008 cmchar "Right hook"
C00014 00009 cmchar "Triangle pointing right"
C00015 00010 cmchar "Triangle pointing left"
C00016 00011 cmchar "Period"
C00017 00012 cmchar "Comma"
C00018 00013 cmchar "Less than sign"
C00019 00014 cmchar "Virgule (slash)"
C00020 00015 cmchar "Greater than sign"
C00021 00016 cmchar "Five-pointed star"
C00022 00017 cmchar "Musical flat sign"
C00023 00018 cmchar "Musical natural sign"
C00025 00019 cmchar "Musical sharp sign"
C00027 00020 cmchar "Slur below (smile)"
C00028 00021 cmchar "Slur above (frown)"
C00029 ENDMK
Cā;
% This file contains special characters of ``math italic'' fonts
% that actually are not supposed to be slanted.
% Codes \0050--\0057, \0072--\0077, and \0133--\0137 are generated.
% The italic corrections are zero in all of these characters.
cmchar "Leftward top half arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"050",18u#,v_center(spread#+rule_thickness#)); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
y0=y1=y2=math_axis; x1+.5rule_thickness=round(w-u); lft x0=round u;
y3-y0=y0-y4=.24asc_height+epsilon; x3=x4=x0+3u+epsilon;
pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
numeric t; path p; p=z4r..{2(x0-x4),y0-y4}z6r;
t=xpart(p intersectiontimes((0,y2l)..(w,y2l))); x2=xpart point t of p;
filldraw z0--(x0,y2l)---z1l..z1r---z2r
..subpath (t,0) of (z3r..{2(x0-x3),y0-y3}z5r)
--z3l..{2(x0-x3),y0-y3}cycle; % arrowhead and stem
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Leftward bottom half arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"051",18u#,v_center(spread#+rule_thickness#)); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
y0=y1=y2=math_axis; x1+.5rule_thickness=round(w-u); lft x0=round u;
y3-y0=y0-y4=.24asc_height+epsilon; x3=x4=x0+3u+epsilon;
pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
numeric t; path p; p=z4r..{2(x0-x4),y0-y4}z6r;
t=xpart(p intersectiontimes((0,y2l)..(w,y2l))); x2=xpart point t of p;
filldraw z0{2(x4-x0),y4-y0}..z4l
--subpath (0,t) of (z4r..{2(x0-x4),y0-y4}z6r)
..z2l---z1l..z1r---(x0,y2r)--cycle; % arrowhead and stem
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Rightward top half arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"052",18u#,v_center(spread#+rule_thickness#)); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
y0=y1=y2=math_axis; x1-.5rule_thickness=round u; rt x0=round(w-u);
y3-y0=y0-y4=.24asc_height+epsilon; x3=x4=x0-3u-epsilon;
pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
numeric t; path p; p=z4l..{2(x0-x4),y0-y4}z6r;
t=xpart(p intersectiontimes((0,y2l)..(w,y2l))); x2=xpart point t of p;
filldraw z0--(x0,y2l)---z1l..z1r---z2r
..subpath (t,0) of (z3l..{2(x0-x3),y0-y3}z5r)
--z3r..{2(x0-x3),y0-y3}cycle; % arrowhead and stem
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Rightward bottom half arrow";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"053",18u#,v_center(spread#+rule_thickness#)); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
pos1(rule_thickness,90); pos2(rule_thickness,90); pos3(bar,0); pos4(bar,0);
y0=y1=y2=math_axis; x1-.5rule_thickness=round u; rt x0=round(w-u);
y3-y0=y0-y4=.24asc_height+epsilon; x3=x4=x0-3u-epsilon;
pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
numeric t; path p; p=z4l..{2(x0-x4),y0-y4}z6r;
t=xpart(p intersectiontimes((0,y2l)..(w,y2l))); x2=xpart point t of p;
filldraw z0{2(x4-x0),y4-y0}..z4r
--subpath (0,t) of (z4l..{2(x0-x4),y0-y4}z6r)
..z2l---z1l..z1r---(x0,y2r)--cycle; % arrowhead and stem
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Left hook";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"054",5u#,v_center(2spread#+rule_thickness#));
adjust_fit(0,0); pickup rule.nib;
lft x2=round u-epsilon; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]; y3=math_axis;
draw z1{left}...z2{down}...z3{right}; % hook
labels(1,2,3); endchar;
cmchar "Right hook";
compute_spread(.45x_height#,.55x_height#);
beginchar(oct"055",5u#,v_center(2spread#+rule_thickness#));
adjust_fit(0,0); pickup rule.nib;
rt x2=round(w-u)+epsilon; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]; y3=math_axis;
draw z1{right}...z2{down}...z3{left}; % hook
labels(1,2,3); endchar;
cmchar "Triangle pointing right";
beginchar(oct"056",9u#,v_center(x_height#)); less_rounded;
adjust_fit(0,0); pickup rule.nib;
numeric a,b; a=sqrt(3.14159/sqrt3); % triangle area $=$ circle area
b=.5w-(rt round u); .5[x1',x2']=.5w; x2'-x1'=a*b*sqrt3;
x1=x3=good.x x1'; x2=good.x x2'; y2=.5[y1,y3]=math_axis; y1=good.y(y2+a*b);
draw z1--z2--z3--cycle; % triangle
labels(1,2,3); endchar;
cmchar "Triangle pointing left";
beginchar(oct"057",9u#,v_center(x_height#)); less_rounded;
adjust_fit(0,0); pickup rule.nib;
numeric a,b; a=sqrt(3.14159/sqrt3); % triangle area $=$ circle area
b=.5w-(rt round u); .5[x1',x2']=.5w; x1'-x2'=a*b*sqrt3;
x1=x3=good.x x1'; x2=good.x x2'; y2=.5[y1,y3]=math_axis; y1=good.y(y2+a*b);
draw z1--z2--z3--cycle; % triangle
labels(1,2,3); endchar;
cmchar "Period";
numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
define_whole_blacker_pixels(dot_diam);
beginchar(oct"072",5u#,dot_diam#,0); % non-ASCII position
adjust_fit(0,0); pickup fine.nib;
pos1(dot_diam,0); pos2(dot_diam,90);
lft x1l=round(.5w-.5dot_diam); bot y2l=0; z1=z2; dot(1,2); % dot
penlabels(1,2); endchar;
cmchar "Comma";
numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
define_whole_blacker_pixels(dot_diam);
beginchar(oct"073",5u#,dot_diam#,comma_depth#); % non-ASCII position
adjust_fit(0,0);
x1-.5dot_diam=round(.5w-.5dot_diam); y1-.5dot_diam=0;
comma(1,a,dot_diam,.2u,comma_depth); % dot and tail
penlabels(1); endchar;
cmchar "Less than sign";
compute_spread(5/4x_height#,3/2x_height#);
beginchar("<",14u#,v_center(spread#+rule_thickness#)); less_rounded;
italcorr h#*slant-u#;
adjust_fit(0,0); pickup rule.nib;
lft x2=round 1.5u-epsilon; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
draw z1--z2--z3; % diagonals
labels(1,2,3); endchar;
cmchar "Virgule (slash)";
beginchar(oct"075",9u#,body_height#,body_depth#); % non-ASCII position
italcorr body_height#*slant-.5u#;
adjust_fit(0,0); pickup rule.nib; less_rounded;
rt x1=round(w-u)+epsilon; top y1=h+epsilon;
lft x2=round u-epsilon; bot y2=-d-epsilon;
draw z1--z2; % diagonal
penlabels(1,2); endchar;
cmchar "Greater than sign";
compute_spread(5/4x_height#,3/2x_height#);
beginchar(">",14u#,v_center(spread#+rule_thickness#)); less_rounded;
italcorr math_axis#*slant-u#;
adjust_fit(0,0); pickup rule.nib;
rt x2=round(w-1.5u)+epsilon; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
draw z1--z2--z3; % diagonals
labels(1,2,3); endchar;
cmchar "Five-pointed star";
beginchar(oct"077",9u#,v_center(x_height#)); less_rounded;
adjust_fit(0,0); pickup tiny.nib;
numeric theta; theta=360/5; % degrees between points
pos0(curve,0); pos1(rule_thickness,90); x0=x1=good.x .5w;
top y1r=vround(math_axis+.5x_height+.5rule_thickness);
ypart(.5[z1,z0+(z1-z2) rotated 2theta])=math_axis;
pos2(curve,theta); pos3(rule_thickness,90+theta);
z2=z0; z3-z0=(z1-z0) rotated theta;
z4=whatever[z0l,z1r]=whatever[z2r,z3r];
filldraw for n=0 upto 4:
z0+(z1r-z0)rotated(n*theta)--z0+(z4-z0)rotated(n*theta)--endfor
cycle; % star
penlabels(0,1,2,3,4); endchar;
cmchar "Musical flat sign";
beginchar(oct"133",7u#,body_height#,0); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
numeric light_hair; light_hair=if hefty: vair else: hair fi;
pos1(light_hair,0); pos2(light_hair,180); pos3(light_hair,0); x1=x2=x3;
pos4(.25[light_hair,curve],60); pos5(curve,0);
lft x1l=round u; x4=.5w; rt x5r=round(w-u);
top y1=h; bot y3=-o; top y4=x_height+o; y2=y4-.2x_height; y5=3/4x_height;
filldraw stroke z1e--z3e; % stem
filldraw stroke z2e{up}...z4e{right}...z5e{down}
...{2(x3-x5e),y3-y5e}z3e; % bowl
penlabels(1,2,3,4,5); endchar;
cmchar "Musical natural sign";
beginchar(oct"134",7u#,asc_height#,desc_depth#); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
numeric light_hair; light_hair=if hefty: vair else: hair fi;
pos1(light_hair,0); pos2(curve,90); pos3(curve,90);
pos4(curve,90); pos5(curve,90); pos6(light_hair,0);
rt x1r=round 15/8u; x2=x4=x1l; x3=x5=x6r=w-x2;
y1=h+o; top y2r=0; .5[y2,y3]=0; y4-y2=y5-y3=x_height; bot y6=-d-o;
x2'=x1r; z2'=whatever[z2r,z3r]; x5'=x6l; z5'=whatever[z4l,z5l];
(x1r,y)=z1l+whatever*(z5-z4); y6l:=y6l-(y-y1r); y1r:=y;
filldraw z1l--z2l--z3l--z3r--z2'--z1r--cycle; % left stem and lower bar
filldraw z6r--z5r--z4r--z4l--z5'--z6l--cycle; % right stem and upper bar
penlabels(1,2,3,4,5,6); endchar;
cmchar "Musical sharp sign";
beginchar(oct"135",7u#,asc_height#,desc_depth#); less_rounded;
adjust_fit(0,0); pickup crisp.nib;
numeric light_hair; light_hair=if hefty: vair else: hair fi;
pos1(curve,90); pos2(curve,90); pos3(curve,90); pos4(curve,90);
lft x1=lft x3=round u; x2=x4=w-x1;
top y3r=0; .5[y3,y4]=0; y1-y3=y2-y4=x_height;
filldraw stroke z1e--z2e; filldraw stroke z3e--z4e; % bars
numeric theta,hstem; theta=angle(z2-z1);
(hstem-crisp)*cosd theta=light_hair-crisp;
pos5(hstem,theta); pos6(hstem,theta); pos7(hstem,theta); pos8(hstem,theta);
lft x5l=lft x6l=round(2u-.5light_hair); x7=x8=w-x6;
top y7l=h+o; bot y6r=-d-o; z7-z5=z8-z6=(whatever,0) rotated theta;
filldraw stroke z5e--z6e; filldraw stroke z7e--z8e; % stems
penlabels(1,2,3,4,5,6,7,8); endchar;
cmchar "Slur below (smile)";
beginchar(oct"136",18u#,v_center(.5x_height#));
adjust_fit(0,0); pickup fine.nib;
numeric light_stem; light_stem=vround(.5[vair,stem]);
x1-.5hair=round u; y1+.5hair=vround(h+.5hair); x3=w-x1; y3=y1;
pos2(light_stem,90); x2=.5w; y2l=good.y(-d);
numeric theta; theta=angle((z2-z1)yscaled 3);
pos1(hair,90+theta); pos3(hair,90-theta);
filldraw z1l{dir theta}...z2l...{dir-theta}z3l
..z3r{-dir-theta}...z2r...{-dir theta}z1r..cycle; % arc
penlabels(1,2,3); endchar;
cmchar "Slur above (frown)";
beginchar(oct"137",18u#,v_center(.5x_height#));
adjust_fit(0,0); pickup fine.nib;
numeric light_stem; light_stem=vround(.5[vair,stem]);
x1-.5hair=round u; y1-.5hair=vround(-d-.5hair); x3=w-x1; y3=y1;
pos2(light_stem,90); x2=.5w; y2=good.y h;
numeric theta; theta=angle((z2-z1)yscaled 3);
pos1(hair,90+theta); pos3(hair,90-theta);
filldraw z1l{dir theta}...z2l...{dir-theta}z3l
..z3r{-dir-theta}...z2r...{-dir theta}z1r..cycle; % arc
penlabels(1,2,3); endchar;